#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>

#include "global.h"
#include "constantes.h"
#include "sockets.h"
#include "NIPC.h"
#include "listas.h"
#include "sincronizador6.h"


extern int numeroSincro;
extern int contador;
int owner;

	
void *syncer(void *args) {
    
	disco * dsk = (struct DiscoConocido *) args;	
	int i,j,ret,flag,salto;
	int sectorASincronizar=0;
	numeroSincro++;
	owner = numeroSincro;
	char* vacia=(char *)malloc(512);
	memset(vacia,'\0',512);
	
	
	disco* discoAux=BuscarDiscoPorNombre("Disco1");
	
	while(sectorASincronizar< 1048576)
	{
		asignarread(discoAux,sectorASincronizar,owner);   
		sectorASincronizar++;
    }

}


void* asignarread(disco* dsk,int sector, int owner) {
    
	char * sContador=(char*)malloc(20);
	int payload;
	char *sAux=(char *)malloc(20);
	int ret;
	int tamanio_buff ;
	char *buffer;
	
	
	
	strcpy(sContador,"-1");
	dsk->pendings++;
	memset(sAux,'\0',20);
	intacad(sector,sAux);	
	payload=READ_SECTORSYNC_REQUEST;
	tamanio_buff = strlen(sContador) + 1 + strlen(sAux) + 2 ;
	buffer = (char *) malloc (sizeof(char) * tamanio_buff);
	strcpy(buffer, sContador);
	strcat(buffer, ",");
	strcat(buffer, sAux);
	strcat(buffer, ";");
	InfoIPC rInfoIPC3;
	rInfoIPC3.payLoadLength=tamanio_buff;
	generarStructIPC(buffer,payload,&rInfoIPC3);
	enviarIPC(dsk->iSocketHDAParaDA,&rInfoIPC3);	
	free(rInfoIPC3.payload);
	free(buffer);
	free(sAux);
	free(sContador);
	
	if((sector%100000)==0)
		printf("Envie a leer %i \n",sector);
	

}

